package edu.biwu.service.impl;

import edu.biwu.dao.UserDao;
import edu.biwu.dao.impl02.UserDaoImpl;
import lombok.Data;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
@Data
public class UserServiceImpl04 {

    /*
     * 没有指定name和type属性
     * 1.接口有一个实现类: 先按照bean的id="userDao" 查找=>没找到 =>按照类型(接口的完全限定名就是类型也就是UserDao接口 然后找到UserDao接口的实现类) =>找到一个=>注入 edu.biwu.dao.impl.UserDaoImpl
     * 2.接口有多个实现类: 按照bean的id="userDao" 查找=>没找到 =>按照类型(接口的完全限定名就是类型也就是UserDao接口 然后找到UserDao接口的实现类) =>找到二个=>抛出异常
     *  */
//    @Resource
//    private UserDao userDao;

    //只指定name属性
    //1.接口只有一个实现类: 按照bean的id="userDaoImpl" 去抄找=>唯一匹配=>注入 edu.biwu.dao.impl.UserDaoImpl
    //2.接口有多个实现类: 按照bean的id="userDaoImpl" 去抄找=>唯一匹配=>注入 edu.biwu.dao.impl.UserDaoImpl
//    @Resource(name="userDaoImpl")
//    private UserDao userDao;


    //只指定type属性
    //1.接口只有一个实现类: type = UserDaoImpl.class => 按照类型(impl02.UserDaoImpl)查找=>唯一匹配=>直接注入
    //2.接口有多个实现类: type = UserDaoImpl.class => 按照类型(impl02.UserDaoImpl)查找=>唯一匹配=>直接注入
    //                 type = UserDao.class => 按照UserDao实现查找=>多个匹配=>抛异常

//    @Resource(type = UserDaoImpl.class)
//    @Resource(type = UserDao.class)
//    private UserDao userDao;

    //同时指定name和type属性
    //1.接口只有一个实现类: 会按照Bean的id="userDaoImpl" 并且类型为 edu.biwu.dao.impl.UserDaoImpl
    //1.接口有多个实现类: 会按照Bean的id="userDaoImpl" 并且类型为 edu.biwu.dao.impl.UserDaoImpl

//    @Resource(name = "userDaoImpl",type = UserDaoImpl.class)
    @Resource(name = "userDaoImpl02",type = UserDaoImpl.class)
    private UserDao userDao;
}
